#ifndef __DIRECTION_H
#define __DIRECTION_H

#include "rect.h"

typedef enum {
	DIR_NONE = 0, DIR_DOWN=1, DIR_UP=2, DIR_LEFT=3, DIR_RIGHT=4, 
	DIR_DOWNLEFT, DIR_DOWNRIGHT, DIR_UPLEFT, DIR_UPRIGHT, // tile light
	DIR_LEVELUP, DIR_LEVELDOWN
} Direction;

Coord direction_apply (Coord from, Direction dir, int steps);
Direction direction_primary (Coord from, Coord to);
Direction direction_secondary (Coord from, Coord to);

#if TOWERHACK_DEBUG
#define DIRECTION_STR(D) ((D) == DIR_NONE      ? "DIR_NONE" : \
                          (D) == DIR_DOWN      ? "DIR_DOWN" : \
                          (D) == DIR_UP        ? "DIR_UP" : \
                          (D) == DIR_LEFT      ? "DIR_LEFT" : \
                          (D) == DIR_RIGHT     ? "DIR_RIGHT" : \
                          (D) == DIR_DOWNLEFT  ? "DIR_DOWNLEFT" : \
                          (D) == DIR_DOWNRIGHT ? "DIR_DOWNRIGHT" : \
                          (D) == DIR_UPLEFT    ? "DIR_UPLEFT" : \
                          (D) == DIR_UPRIGHT   ? "DIR_UPRIGHT" : \
                          (D) == DIR_LEVELUP   ? "DIR_LEVELUP" : \
                          (D) == DIR_LEVELDOWN ? "DIR_LEVELDOWN" : \
                                                 "[undefined direction]")
#endif

#endif
